<?php
/**     
  *
  * Copyright (c) 2009, Persistent Systems Limited
  *
  * Redistribution and use, with or without modification, are permitted 
  *  provided that the following  conditions are met:
  *   - Redistributions of source code must retain the above copyright notice, 
  *     this list of conditions and the following disclaimer.
  *   - Neither the name of Persistent Systems Limited nor the names of its contributors 
  *     may be used to endorse or promote products derived from this software 
  *     without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * This files return the Sales data for the company. It expects HTTP GET method.
  *
  * For monthly data, it requires year.
  *
  * For yearly data, it requires fromyear and toyear.
  *
  * Optional parameters are productid and regionid.
  */
  /**
   *
  */

	include("config/config.php");
	include("classes/connectionClass.php");
	include("includes/commonfunctions.php");
	include("Util/ValidateClaimUtil.php");

	$requiredClaims = array('ViewSalesData'=>true);
	if(!ValidateClaimUtil::ValidateClaims($requiredClaims,ACS_TRUSTED_SERVICE,ACS_TRUSTED_AUDIENCE,ACS_TRUSTED_SIGNING_KEY)){


         setHeader('401','text/html'); 
		 exit;

	}

	$methodAndArgs = array();
	$methodAndArgs = getMethodAndArguments($_SERVER, $_GET, $_POST); 

	
	  
	if($methodAndArgs['method']!= 'GET') {
		setHeader('405','text/html'); 
		exit;
	}

	$salesOrder  = array();
	$metaData    = array();
	$metaData['title'] = 'Sales Data'; // Setting meta data for Atom feed

	try {
			
			$year       = $methodAndArgs['arguments']['year'];
			$toYear     = $methodAndArgs['arguments']['toyear'];
			$fromYear   = $methodAndArgs['arguments']['fromyear'];
			$productId  = $methodAndArgs['arguments']['productid'];
			$regionId  = $methodAndArgs['arguments']['regionid'];
			$whereCond  = '';

			$dB         = new Database_Conn();

			
		if(isset($year)  && !isset($productId) && !isset($fromYear) && !isset($toYear)) {

			
			$whereCond ="date_format(so.OrderDate,'%Y') ='".$year."'";
			$groupBy   = " group by date_format(so.OrderDate,'%M')";

		}

		if(isset($year)  && isset($productId) && !isset($fromYear) && !isset($toYear)) {

			
			$whereCond ="date_format(so.OrderDate,'%Y') ='".$year."' and so.productid=".$productId;
			$groupBy   = " group by date_format(so.OrderDate,'%M')";

		}

		if(!isset($year)  && !isset($productId) && isset($fromYear) && isset($toYear)) {

			
			$whereCond ="date_format(so.OrderDate,'%Y') between $fromYear and $toYear";
			$groupBy   = " group by date_format(so.OrderDate,'%Y')";

		}


		if(!isset($year) && isset($productId) && isset($fromYear) && isset($toYear)) {

			
			$whereCond ="date_format(so.OrderDate,'%Y') between $fromYear and $toYear and so.productid=".$productId;
			$groupBy   = " group by date_format(so.OrderDate,'%Y')";

		}

		if(isset($regionId)) {

			$regionQuery = " inner join salesperson sp  on so.salespersonid = sp.salespersonid ";
			$whereCond.=   " and sp.regionid = $regionId";

		}
		

		   $query = "select sum(so.OrderQty) as Quantity,date_format(so.OrderDate,'%b') as Month,date_format(so.OrderDate,'%Y') as Year,so.productid  from salesorder so $regionQuery where ".$whereCond." ".$groupBy ;  

		$dB->prepareSql($query);

			

		$salesData = $dB->getResults();
		setHeader('202','text/xml'); 

	}catch (Exception $e) {

		
		setHeader('400','text/html'); 
		exit;
            
    }//EO catch

	echo $xmlstr = toAtom($salesData,$metaData); // return the Atom feed 


?>